package com.preguicoso.client.user;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.InlineLabel;
import com.preguicoso.client.RegistroToken;
import com.preguicoso.client.login.LoginService;
import com.preguicoso.client.login.LoginServiceAsync;
import com.preguicoso.shared.RegistroErros;
import com.preguicoso.shared.RegistroStatusPedido;
import com.preguicoso.shared.entities.PedidoBean;

public class StatusPedidoCarrinho extends Composite {

	private static StatusPedidoCarrinhoUiBinder uiBinder = GWT
			.create(StatusPedidoCarrinhoUiBinder.class);
	@UiField InlineLabel status;


	private static StatusPedidoCarrinho instance = null;

	public static StatusPedidoCarrinho getInstance() {
		if (instance == null) {
			instance = new StatusPedidoCarrinho();
		}
		return instance;
	}
	
	private final LoginServiceAsync loginService = GWT
			.create(LoginService.class);

	
	interface StatusPedidoCarrinhoUiBinder extends
			UiBinder<Widget, StatusPedidoCarrinho> {
	}

	public StatusPedidoCarrinho() {
		initWidget(uiBinder.createAndBindUi(this));
		printStatus();
		Timer t = new Timer() {
			@Override
			public void run() {
				printStatus();
			}

		};
		t.scheduleRepeating(5000);
		
	}

	private void printStatus() {
		
		loginService.getPedidoById(idPedido, new AsyncCallback<PedidoBean>() {

			@Override
			public void onSuccess(PedidoBean result) {
				if (result != null) {
					if (result.getStatus().equals(
							RegistroStatusPedido.esperando)) {
						status.setText("Status do Pedido");
					} else if (result.getStatus().equals(RegistroStatusPedido.visto)) {
						status.setText("Seu pedido foi visualizado pela atendente");
					} else if (result.getStatus().equals(RegistroStatusPedido.enviado)) {
						status.setText("Pedido expedido, Aguarde...");
					} else if (result.getStatus().equals(RegistroStatusPedido.recusado)) {
						status.setText("Pedido recusado :" + result.getMotivo());
					}
				} else {
					status.setText("");
				}
			}

			@Override
			public void onFailure(Throwable caught) {
				
			}
		});		
	}
	Long idPedido = null;
	public void setIdPedido(Long result) {
		idPedido = result;
	}

}
